home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / biz / dopus / mpegau_player.lha / mpega_player / arexx / PlayMP2.dopus5 < prev   
Text File  |  1997-09-14  |  9KB  |  263 lines

  1. /* AREXX Script for MPEG-Soundplaying Layer 2&3 Opus5.5+ Filetypes
  2. ** Displays Song, MPEG-Layer, Playtime in a Dopus Progress Window
  3. ** (or Melody MPEGPlay Window).
  4. **
  5. ** Needed: Directory Opus V5.5+ (© by Jonathan Potter & GPSoftware)
  6. **         mpega >= V3.0 (© 1995-97 by Stephane Tavenard)
  7. **
  8. ** Optional:
  9. **       Melody MPEG-Soundcard (© 1997 KATO)
  10. **       MPEGPlay by Thorsten Hansen V1.0+
  11. **         PeggyPlus MPEG-Card (© Ingenierbuero Helfrich)
  12. **        Toccata, Prelude, Delfina-Soundcard & other Soundcard with AHI-Driver
  13. **       AHI Retargetable Audio System (© by Martin Blom)
  14. **
  15. ** 
  16. ** $VER: PlayMP2.dopus5 2.2
  17. ** Copyright © 1995-1997 Eckhard Ludwig (Eckhard@top.east.de)
  18. **
  19. ** EmailWare:
  20. ** This program is Email-Ware !
  21. **
  22. ** Installation:
  23. ** As Opus 5 Filetypes
  24. ** Call as Filetype MPEG-Sound Layer2 (Layer3, only MPEGA):
  25. ** --------------------------------------------------------------------------
  26. ** (Doubleklick)   ARexx DOpus5:ARexx/PlayMP2.dopus5 {f} {Qp} {Ql}
  27. ** --------------------------------------------------------------------------
  28. ** Set flags: "Run asynchron" (Asynchroner Start)
  29. **
  30. ** Usage:
  31. ** Doubleclick to .mp2/3 file and start MPEG-play.
  32. ** if you want to abort a sound press the abort button.
  33. **
  34. ** Deutsch:
  35. ** Programm: PlayMP2.dopus5, Universeller Opus5 MPEG Audioplayer (Layer 2&3),
  36. ** unterstützt MPEG-Karten (Layer 2, Melody Layer2+3), Soundkarten (AHI),
  37. ** Amigasound (Setup über "Player-Setup" !).
  38. **
  39. ** Doppelklicke ein .mp2/3 File, MPEG-Wiedergabe wird gestartet.
  40. ** Wenn anderer Titel oder MPEGPlayer (PlayerMP2.dopus5, PlayMP2.rexx,
  41. ** PlayerMP2.rexx) gerade läuft, wird dieser zuvor sofort beendet.
  42. ** Erneuter Aufruf startet sofort den nächsten Titel (beendet zuvor alten).
  43. */
  44.  
  45. /*--------S E T T I N G S : -------------------------------------------
  46. ** If the file ENV:PlayMP2.prefs exists, that one will override the    
  47. ** settings here !                                                     
  48. */
  49.  
  50. /* Auswahl Player: 
  51.     AUTO        Auto
  52.     MELODY         Melody Soundcard
  53.     PEGGYMELODY     PeggyPlus Card with Melody MPEG-Player
  54.     CD32         CD32 FMV-Modul with Melody MPEG-Player (not tested!)
  55.     PEGGYPLAYER     PeggyPlus Default MPEG-Player
  56.     MPEGA         Softwareplayer  */
  57. Player = "AUTO"
  58. PlayMPEG = "C:mpega"               /* Path Softwareplayer */
  59. PlayMelody = "C:MPEGPlay"         /* Path Melody Hardwareplayer */
  60. MPEGA_OPTIONS="-p0 -T -f0 -d2 -q2"      /* MPEGA Optionen, Vorgabe: Amiga Paula */
  61. BREAKMPEG = "C:BreakName"         /* Path MPEGA Breaktool */
  62.  
  63.  
  64. parse arg '"'Titel'"' portname handle
  65.  
  66. if portname='' then portname='DOPUS.1'
  67. If ~SHOW("P",portname) THEN DO
  68.         SAY portname' is not a valid port!'
  69.     exit
  70. end
  71.  
  72. Signal on syntax
  73. options results
  74. options failat 21
  75. lf='0a'x
  76.  
  77. address value portname
  78. dopus version
  79. if ( result='RESULT' | TRANSLATE(result,'.',' ') < 5.1218 ) THEN DO
  80.         dopus request '"This script requires DOpus V5.5 or greater." OK'
  81.         exit
  82. end
  83.  
  84. if open(1,'env:PlayerMP2.prefs','R') then do
  85.    do i=1 to 6
  86.     prefs.i = readln(1)
  87.         end
  88.    if prefs.2 ~="" then PlayMelody=prefs.2
  89.    if prefs.3 ~="" then PlayMPEG=prefs.3
  90.    if prefs.4 ~="" then BREAKMPEG=prefs.4
  91.    if prefs.5 ~="" then MPEGA_OPTIONS=prefs.5
  92.    if prefs.6 ~="" then Player=prefs.6
  93.    drop prefs.
  94.    call close(1)
  95.    end
  96.  
  97. if ~show('l','rexxsupport.library') then
  98.     call addlib('rexxsupport.library',0,-30,0)
  99.  
  100. /* init locale */
  101. if ~show(l,'locale.library') then
  102.         call addlib('locale.library',0,-30)
  103. if show(l,'locale.library') then
  104.         catalog=opencatalog('PlayMP2.catalog','english',0)
  105.  
  106. If Player="AUTO" then do
  107.     SELECT
  108.     WHEN exists("DEVS:melodympeg.device")&exists(PlayMelody) then Player="MELODY"
  109.     WHEN exists("DEVS:peggympeg.device")&exists(PlayMelody) then Player="PEGGYMELODY"
  110.     WHEN exists("DEVS:mpeg.device")&exists(PlayMelody) then Player="CD32"
  111.     WHEN exists("DEVS:peggympeg.device")&showlist("A","PEGGYPLUS")=1 then Player="PEGGYPLAYER"
  112.     OTHERWISE Player="MPEGA"
  113.     END
  114. end
  115.  
  116. dopus getfiletype '"'Titel'"' id
  117. DT=result
  118.  
  119. /* Player starten & testen */
  120. If DT="MP3"|Player="MPEGA" then do
  121.     if ~exists(PlayMPEG) then do
  122.              ADDRESS VALUE portname
  123.                  dopus front
  124.                  dopus request '"'getcatstr(9,'Fatal Error ...'lf''lf'MPEGA by Stephane TAVENARD not found !'lf'path to command: '"'%s'"'',PlayMPEG)'"' getcatstr(1,'Quit')
  125.                   exit
  126.         end
  127.     if ~exists(BREAKMPEG) then do
  128.              ADDRESS VALUE portname
  129.                  dopus front
  130.                  dopus request '"'getcatstr(10,'Error ...'lf''lf'Breaktool by Kai Iske not found !'lf'path to command: '"'%s'"'',BREAKMPEG)'"' getcatstr(6,'OK')
  131.         end
  132.     if Player="PEGGYPLAYER" & show('P','Peggy') then address 'Peggy' QUIT
  133.     If (Player="MELODY"|Player="PEGGYMELODY"|Player="CD32") & show('P','MPEGPLAY.1') then address 'MPEGPLAY.1' 'QUIT'
  134. end
  135. address command BREAKMPEG" "PlayMPEG" C"
  136.  
  137. if DT="MP2" then do
  138.     if Player="MELODY" & exists(PlayMelody) & ~show('P','MPEGPLAY.1') then do
  139.         call pragma('STACK',10000)
  140.                 address command
  141.                 'run >NIL: <NIL: 'PlayMelody' DEV=melodympeg.device BUFF=32000 NBUFF=10 PUBSCREEN='portname
  142.                 'waitforport MPEGPLAY.1'
  143.     end
  144.     if Player="PEGGYMELODY" & exists(PlayMelody) & ~show('P','MPEGPLAY.1') then do
  145.         call pragma('STACK',10000)
  146.         address command
  147.         'run >NIL: <NIL: 'PlayMelody' DEV=peggympeg.device BUFF=5000 NBUFF=20 PUBSCREEN='portname
  148.         'waitforport MPEGPLAY.1'
  149.     end
  150.     if Player="CD32" & exists(PlayMelody) & ~show('P','MPEGPLAY.1') then do
  151.         call pragma('STACK',10000)
  152.         address command
  153.         'run >NIL: <NIL: 'PlayMelody' DEV=mpeg.device BUFF=32000 NBUFF=10 PUBSCREEN='portname
  154.         'waitforport MPEGPLAY.1'
  155.     end
  156.     if Player="PEGGYPLAYER" then do
  157.            if showlist("A","PEGGYPLUS")=1 & ~show('P','Peggy') then do
  158.             call pragma('STACK',8192)
  159.                 address command
  160.                     'run >NIL: <NIL: PEGGYPLUS:MPEGPlayer'
  161.                 'waitforport Peggy'
  162.             DUMMY=Delay(10)
  163.            end
  164.             if ~show('P','Peggy') then do
  165.             ADDRESS VALUE portname
  166.                 dopus front
  167.                 dopus request '"'getcatstr(8,'Fatal Error ...'lf''lf'Peggy-Plus MPEG Player not found !'lf'Please run Peggy-Player first.')'"' getcatstr(1,'Quit')
  168.             exit
  169.                 end    
  170.     end
  171. end
  172.  
  173. If show('P','mpegport') then address 'mpegport' STOP
  174. DUMMY=delay(20)
  175.  
  176. if DT="MP3"|Player="MPEGA" then do
  177.      address command "RUN >NIL: "PlayMPEG" <nil: "MPEGA_OPTIONS" " '"'Titel'"' " >PIPE:MPEGAOUT"
  178.      if ~Open('MPEGAOUT','PIPE:MPEGAOUT','r') then do
  179.         ADDRESS VALUE portname
  180.                  dopus front
  181.                  dopus request '"'getcatstr(7,'System Error ...'lf'DEVS:DOSDrivers/PIPE not installed !')'"' getcatstr(1,'Quit')
  182.         exit
  183.     end
  184.     Titel=substr(Titel,lastpos("/",Titel)+1)
  185.     LISTER SET Handle newprogress name info bar abort
  186.     MPEGAV = readln('MPEGAOUT')
  187.     if  substr(MPEGAV,11,3)>=3.3 then MPEGAV=substr(MPEGAV,5,9)||substr(MPEGAV,19)
  188.     else VMPEGA=1
  189.      parse var MPEGAV MPEGAV "(C)"
  190.     ADDRESS VALUE portname
  191.     do until readln('MPEGAOUT')=""
  192.     end
  193.     BUFFER=""
  194.     DUMMY=""
  195.     DO UNTIL DUMMY='0D'x
  196.         DUMMY=readch('MPEGAOUT',1)
  197.              BUFFER=BUFFER||DUMMY
  198.      end
  199.     if VMPEGA=1 then do
  200.         PM=substr(BUFFER,1,2)
  201.         PS=substr(BUFFER,4,2)
  202.         CD=substr(BUFFER,7,pos('0A'x,BUFFER)-7)
  203.         end
  204.     else do
  205.         PM=substr(BUFFER,pos('length:',BUFFER)+12,2)
  206.         PS=substr(BUFFER,pos('length:',BUFFER)+15,2)
  207.         CD=substr(BUFFER,pos('Type:',BUFFER)+10)
  208.         CD=left(CD,pos('1B'x,CD)-1)
  209.         end
  210.      TIME=PM*60+PS
  211.      SEC=0
  212.      LISTER SET Handle newprogress title MPEGAV
  213.      LISTER SET Handle newprogress name PM":"PS"  "CD
  214.      DO UNTIL Eof('MPEGAOUT')
  215.         DO UNTIL readch('MPEGAOUT',1)='0D'x|Eof('MPEGAOUT')
  216.          end
  217.               LISTER SET Handle NEWPROGRESS INFO PM":"PS"  "Titel
  218.            LISTER SET Handle NEWPROGRESS bar TIME SEC
  219.         SEC=SEC+1
  220.         PS=right(PS-1,2,0)
  221.         if PS<0 then do
  222.             PS=59
  223.             PM=right(PM-1,2,0)
  224.         end
  225.           LISTER QUERY Handle abort
  226.           IF RESULT THEN address command BREAKMPEG" "PlayMPEG" C"
  227.      end
  228.      LISTER CLEAR Handle progress
  229.     DUMMY=delay(10)
  230.      CALL Close('MPEGAOUT')
  231. end
  232. If DT="MP2" & Player="PEGGYPLAYER" then do
  233.           address 'Peggy'
  234.           open '"'Titel'"'
  235.           setwindow XOFF 0 YOFF 0 WIDTH 1 HEIGHT 1 XPIC 0 YPIC 0
  236.           Play async
  237. end
  238. if DT="MP2" & (Player="MELODY"|Player="PEGGYMELODY"|Player="CD32") then do
  239.     if ~show('P','MPEGPLAY.1') then do
  240.         ADDRESS VALUE portname
  241.             dopus front
  242.             dopus request '"'getcatstr(11,'Fatal Error ...'lf''lf'MPEGPlay V1.0+ by Thorsten Hansen not found !'lf'Path to Command: '"'%s'"''lf'For Setup use Player-Setup !',PlayMelody)'"' getcatstr(1,'Quit')
  243.         exit
  244.     end
  245.     else do
  246.           address 'MPEGPLAY.1'
  247.         'showgui'
  248.               'play' Titel
  249.     end
  250. end
  251. exit
  252. /*-----Locale-----------------------------------------------------------------*/
  253. getcatstr:
  254. parse arg msgno,msgstring,insert.1,insert.2
  255. if catalog~=0 then msgstring=getcatalogstr(catalog,msgno,msgstring)
  256. j=0
  257. do while pos('%s',msgstring)>0
  258.         parse var msgstring fore '%s' aft
  259.           j=j+1
  260.           msgstring=fore||insert.j||aft
  261. end
  262. return msgstring
  263.